package cn.b.sky.user.service;

import cn.b.sky.common.model.BatchJobReport;
import cn.b.sky.common.model.TreeInterface;
import cn.b.sky.user.service.model.Role;
import cn.b.sky.user.service.model.RoleBusinessType;
import cn.b.sky.user.service.model.UserInfo;
import cn.b.sky.user.service.model.condition.RoleCondition;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 
 * <strong>Title : RoleService.java<br>
 * </strong> <strong>Package : cn.b.sky.user.service<br>
 * </strong> <strong>Description : </strong>角色管理业务接口<br>
 * <strong>Create on : 2015-8-4 下午01:42:16<br>
 * </strong>
 * <p>
 * 
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface RoleService
{
	/**
	 * 
	 * <strong>Title : selectRoleList<br>
	 * </strong> <strong>Description : </strong>查询角色<br>
	 * <strong>Create on : 2015-8-4 下午02:30:40<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleCondition
	 * @return List<Role>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<Role> selectRoleList(RoleCondition roleCondition);

	/**
	 * 
	 * <strong>Title : selectRoleCount<br>
	 * </strong> <strong>Description : </strong>查询角色条数<br>
	 * <strong>Create on : 2015-8-4 下午02:30:12<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleCondition
	 * @return int
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public int selectRoleCount(RoleCondition roleCondition);

	/**
	 * 
	 * <strong>Title : selectRole<br>
	 * </strong> <strong>Description : </strong>查询角色<br>
	 * <strong>Create on : 2015-8-13 上午11:19:48<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return Role
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public Role selectRole(String siteCode, String roleCode);

	/**
	 * 
	 * <strong>Title : insertRole<br>
	 * </strong> <strong>Description : </strong>新增角色<br>
	 * <strong>Create on : 2015-8-13 上午11:20:48<br>
	 * </strong>
	 * <p>
	 * 
	 * @param role
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void insertRole(Role role);

	/**
	 * 
	 * <strong>Title : updateRole<br>
	 * </strong> <strong>Description : </strong>修改角色<br>
	 * <strong>Create on : 2015-8-13 下午01:07:08<br>
	 * </strong>
	 * <p>
	 * 
	 * @param role
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void updateRole(Role role);

	/**
	 * 
	 * <strong>Title : deleteRole<br>
	 * </strong> <strong>Description : </strong>删除角色<br>
	 * <strong>Create on : 2015-8-13 下午01:32:12<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public BatchJobReport deleteRole(String siteCode, String roleCode);

	/**
	 * 
	 * <strong>Title : selectMenuByRole<br>
	 * </strong> <strong>Description : </strong>查询角色对应的权限菜单br> <strong>Create on
	 * : 2015-8-13 下午02:38:07<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return List<MenuInfo>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<TreeInterface> selectMenuByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectUserByRole<br>
	 * </strong> <strong>Description : </strong>查询角色对应的用户<br>
	 * <strong>Create on : 2015-8-13 下午02:38:43<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return List<UserInfo>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<UserInfo> selectUserByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectRoleBusinessType<br>
	 * </strong> <strong>Description : </strong>通过Role查询角色业务类型信息<br>
	 * <strong>Create on : 2016-11-9 上午10:12:42<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return RoleBusinessType
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */

	public List<RoleBusinessType> selectRoleBusinessTypeByRole(String siteCode, String roleCode);

	/**
	 * 
	 * <strong>Title : saveRoleBusinessType<br>
	 * </strong> <strong>Description : </strong>保存角色权限<br>
	 * <strong>Create on : 2016-11-17 上午9:06:18<br>
	 * </strong>
	 * <p>
	 * 
	 * @param role
	 *            void
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void saveRoleBusinessType(Role role);
	
	/**
	 * 
	 * <strong>Title : authorizeRole<br></strong>
	 * <strong>Description : </strong>角色授权<br> 
	 * <strong>Create on : 2017年3月13日 下午3:52:14<br></strong>
	 * <p>
	 * @param role
	 * void
	 * @throws 
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void authorizeRole(Role role);
}
